import axios from 'axios'
import env from './env'
import { Message } from 'element-ui'
import router from '@/router'
// 创建实例
const service = axios.create({
    // 基准地址
    baseURL: env.prod.baseURL,
    // 超时时间
    timeout: 5000
})
// 请求拦截
// axios设置请求拦截器
service.interceptors.request.use(config => {
    //   config.headers.mytoken = 'nihao' //设置响应头
    // 如果不是登录接口，需要配置请求头，添加token
    if (config.url !== '/login') {
        const token = sessionStorage.getItem('token')
        token && (config.headers.Authorization = token)
    }
    return config
}, error => {
    return Promise.reject(error)
})
// axios设置响应拦截器
service.interceptors.response.use(res => {
    // console.log(res)
    const { data: result, meta } = res.data
    const { status: code, msg } = meta
    // console.log(code)
    // console.log(msg)
    // console.log(result)
    const statusarr = [200, 201, 204]
    // 判断返回码是不是包含200,201,204，如果包含，则成功
    if (statusarr.includes(code)) {
        Message({
            message: msg,
            type: 'success'
        })
        // 判断是不是登陆成功的,如果是就添加token到本地
        if (res.config.url === '/login') {
            sessionStorage.setItem('token', result.token)
        }
        return result
    }
    // 错误
    Message({
        message: msg,
        type: 'error'
    })
    // 判断  当有人恶意篡改token，直接返回login
    // 因为当token不正确的时候，会返回‘无效token’
    if (msg === '无效token') {
        router.replace('/login')
    }
    return Promise.reject(msg)
    //   return = response.data //拦截处理响应结果，直接返回需要的数据
}, error => {
    return Promise.reject(error)
})
export default service
